package cn.shuto.liferay.plugin.chart.service.service.base;

import cn.shuto.liferay.plugin.chart.service.model.DataSourceCfg;
import cn.shuto.liferay.plugin.chart.service.service.DataSourceCfgService;
import cn.shuto.liferay.plugin.chart.service.service.persistence.ChartTemplatePersistence;
import cn.shuto.liferay.plugin.chart.service.service.persistence.DataSourceCfgPersistence;
import cn.shuto.liferay.plugin.chart.service.service.persistence.OptionPersistence;

import com.liferay.portal.kernel.bean.BeanReference;
import com.liferay.portal.kernel.bean.IdentifiableBean;
import com.liferay.portal.kernel.dao.jdbc.SqlUpdate;
import com.liferay.portal.kernel.dao.jdbc.SqlUpdateFactoryUtil;
import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.service.BaseServiceImpl;
import com.liferay.portal.service.persistence.UserPersistence;

import javax.sql.DataSource;

/**
 * Provides the base implementation for the data source cfg remote service.
 *
 * <p>
 * This implementation exists only as a container for the default service methods generated by ServiceBuilder. All custom service methods should be put in {@link cn.shuto.liferay.plugin.chart.service.service.impl.DataSourceCfgServiceImpl}.
 * </p>
 *
 * @author shixw
 * @see cn.shuto.liferay.plugin.chart.service.service.impl.DataSourceCfgServiceImpl
 * @see cn.shuto.liferay.plugin.chart.service.service.DataSourceCfgServiceUtil
 * @generated
 */
public abstract class DataSourceCfgServiceBaseImpl extends BaseServiceImpl
    implements DataSourceCfgService, IdentifiableBean {
    @BeanReference(type = cn.shuto.liferay.plugin.chart.service.service.ChartTemplateLocalService.class)
    protected cn.shuto.liferay.plugin.chart.service.service.ChartTemplateLocalService chartTemplateLocalService;
    @BeanReference(type = cn.shuto.liferay.plugin.chart.service.service.ChartTemplateService.class)
    protected cn.shuto.liferay.plugin.chart.service.service.ChartTemplateService chartTemplateService;
    @BeanReference(type = ChartTemplatePersistence.class)
    protected ChartTemplatePersistence chartTemplatePersistence;
    @BeanReference(type = cn.shuto.liferay.plugin.chart.service.service.DataSourceCfgLocalService.class)
    protected cn.shuto.liferay.plugin.chart.service.service.DataSourceCfgLocalService dataSourceCfgLocalService;
    @BeanReference(type = cn.shuto.liferay.plugin.chart.service.service.DataSourceCfgService.class)
    protected cn.shuto.liferay.plugin.chart.service.service.DataSourceCfgService dataSourceCfgService;
    @BeanReference(type = DataSourceCfgPersistence.class)
    protected DataSourceCfgPersistence dataSourceCfgPersistence;
    @BeanReference(type = cn.shuto.liferay.plugin.chart.service.service.OptionLocalService.class)
    protected cn.shuto.liferay.plugin.chart.service.service.OptionLocalService optionLocalService;
    @BeanReference(type = OptionPersistence.class)
    protected OptionPersistence optionPersistence;
    @BeanReference(type = com.liferay.counter.service.CounterLocalService.class)
    protected com.liferay.counter.service.CounterLocalService counterLocalService;
    @BeanReference(type = com.liferay.portal.service.ResourceLocalService.class)
    protected com.liferay.portal.service.ResourceLocalService resourceLocalService;
    @BeanReference(type = com.liferay.portal.service.UserLocalService.class)
    protected com.liferay.portal.service.UserLocalService userLocalService;
    @BeanReference(type = com.liferay.portal.service.UserService.class)
    protected com.liferay.portal.service.UserService userService;
    @BeanReference(type = UserPersistence.class)
    protected UserPersistence userPersistence;
    private String _beanIdentifier;
    private ClassLoader _classLoader;
    private DataSourceCfgServiceClpInvoker _clpInvoker = new DataSourceCfgServiceClpInvoker();

    /*
     * NOTE FOR DEVELOPERS:
     *
     * Never modify or reference this class directly. Always use {@link cn.shuto.liferay.plugin.chart.service.service.DataSourceCfgServiceUtil} to access the data source cfg remote service.
     */

    /**
     * Returns the chart template local service.
     *
     * @return the chart template local service
     */
    public cn.shuto.liferay.plugin.chart.service.service.ChartTemplateLocalService getChartTemplateLocalService() {
        return chartTemplateLocalService;
    }

    /**
     * Sets the chart template local service.
     *
     * @param chartTemplateLocalService the chart template local service
     */
    public void setChartTemplateLocalService(
        cn.shuto.liferay.plugin.chart.service.service.ChartTemplateLocalService chartTemplateLocalService) {
        this.chartTemplateLocalService = chartTemplateLocalService;
    }

    /**
     * Returns the chart template remote service.
     *
     * @return the chart template remote service
     */
    public cn.shuto.liferay.plugin.chart.service.service.ChartTemplateService getChartTemplateService() {
        return chartTemplateService;
    }

    /**
     * Sets the chart template remote service.
     *
     * @param chartTemplateService the chart template remote service
     */
    public void setChartTemplateService(
        cn.shuto.liferay.plugin.chart.service.service.ChartTemplateService chartTemplateService) {
        this.chartTemplateService = chartTemplateService;
    }

    /**
     * Returns the chart template persistence.
     *
     * @return the chart template persistence
     */
    public ChartTemplatePersistence getChartTemplatePersistence() {
        return chartTemplatePersistence;
    }

    /**
     * Sets the chart template persistence.
     *
     * @param chartTemplatePersistence the chart template persistence
     */
    public void setChartTemplatePersistence(
        ChartTemplatePersistence chartTemplatePersistence) {
        this.chartTemplatePersistence = chartTemplatePersistence;
    }

    /**
     * Returns the data source cfg local service.
     *
     * @return the data source cfg local service
     */
    public cn.shuto.liferay.plugin.chart.service.service.DataSourceCfgLocalService getDataSourceCfgLocalService() {
        return dataSourceCfgLocalService;
    }

    /**
     * Sets the data source cfg local service.
     *
     * @param dataSourceCfgLocalService the data source cfg local service
     */
    public void setDataSourceCfgLocalService(
        cn.shuto.liferay.plugin.chart.service.service.DataSourceCfgLocalService dataSourceCfgLocalService) {
        this.dataSourceCfgLocalService = dataSourceCfgLocalService;
    }

    /**
     * Returns the data source cfg remote service.
     *
     * @return the data source cfg remote service
     */
    public cn.shuto.liferay.plugin.chart.service.service.DataSourceCfgService getDataSourceCfgService() {
        return dataSourceCfgService;
    }

    /**
     * Sets the data source cfg remote service.
     *
     * @param dataSourceCfgService the data source cfg remote service
     */
    public void setDataSourceCfgService(
        cn.shuto.liferay.plugin.chart.service.service.DataSourceCfgService dataSourceCfgService) {
        this.dataSourceCfgService = dataSourceCfgService;
    }

    /**
     * Returns the data source cfg persistence.
     *
     * @return the data source cfg persistence
     */
    public DataSourceCfgPersistence getDataSourceCfgPersistence() {
        return dataSourceCfgPersistence;
    }

    /**
     * Sets the data source cfg persistence.
     *
     * @param dataSourceCfgPersistence the data source cfg persistence
     */
    public void setDataSourceCfgPersistence(
        DataSourceCfgPersistence dataSourceCfgPersistence) {
        this.dataSourceCfgPersistence = dataSourceCfgPersistence;
    }

    /**
     * Returns the option local service.
     *
     * @return the option local service
     */
    public cn.shuto.liferay.plugin.chart.service.service.OptionLocalService getOptionLocalService() {
        return optionLocalService;
    }

    /**
     * Sets the option local service.
     *
     * @param optionLocalService the option local service
     */
    public void setOptionLocalService(
        cn.shuto.liferay.plugin.chart.service.service.OptionLocalService optionLocalService) {
        this.optionLocalService = optionLocalService;
    }

    /**
     * Returns the option persistence.
     *
     * @return the option persistence
     */
    public OptionPersistence getOptionPersistence() {
        return optionPersistence;
    }

    /**
     * Sets the option persistence.
     *
     * @param optionPersistence the option persistence
     */
    public void setOptionPersistence(OptionPersistence optionPersistence) {
        this.optionPersistence = optionPersistence;
    }

    /**
     * Returns the counter local service.
     *
     * @return the counter local service
     */
    public com.liferay.counter.service.CounterLocalService getCounterLocalService() {
        return counterLocalService;
    }

    /**
     * Sets the counter local service.
     *
     * @param counterLocalService the counter local service
     */
    public void setCounterLocalService(
        com.liferay.counter.service.CounterLocalService counterLocalService) {
        this.counterLocalService = counterLocalService;
    }

    /**
     * Returns the resource local service.
     *
     * @return the resource local service
     */
    public com.liferay.portal.service.ResourceLocalService getResourceLocalService() {
        return resourceLocalService;
    }

    /**
     * Sets the resource local service.
     *
     * @param resourceLocalService the resource local service
     */
    public void setResourceLocalService(
        com.liferay.portal.service.ResourceLocalService resourceLocalService) {
        this.resourceLocalService = resourceLocalService;
    }

    /**
     * Returns the user local service.
     *
     * @return the user local service
     */
    public com.liferay.portal.service.UserLocalService getUserLocalService() {
        return userLocalService;
    }

    /**
     * Sets the user local service.
     *
     * @param userLocalService the user local service
     */
    public void setUserLocalService(
        com.liferay.portal.service.UserLocalService userLocalService) {
        this.userLocalService = userLocalService;
    }

    /**
     * Returns the user remote service.
     *
     * @return the user remote service
     */
    public com.liferay.portal.service.UserService getUserService() {
        return userService;
    }

    /**
     * Sets the user remote service.
     *
     * @param userService the user remote service
     */
    public void setUserService(
        com.liferay.portal.service.UserService userService) {
        this.userService = userService;
    }

    /**
     * Returns the user persistence.
     *
     * @return the user persistence
     */
    public UserPersistence getUserPersistence() {
        return userPersistence;
    }

    /**
     * Sets the user persistence.
     *
     * @param userPersistence the user persistence
     */
    public void setUserPersistence(UserPersistence userPersistence) {
        this.userPersistence = userPersistence;
    }

    public void afterPropertiesSet() {
        Class<?> clazz = getClass();

        _classLoader = clazz.getClassLoader();
    }

    public void destroy() {
    }

    /**
     * Returns the Spring bean ID for this bean.
     *
     * @return the Spring bean ID for this bean
     */
    @Override
    public String getBeanIdentifier() {
        return _beanIdentifier;
    }

    /**
     * Sets the Spring bean ID for this bean.
     *
     * @param beanIdentifier the Spring bean ID for this bean
     */
    @Override
    public void setBeanIdentifier(String beanIdentifier) {
        _beanIdentifier = beanIdentifier;
    }

    @Override
    public Object invokeMethod(String name, String[] parameterTypes,
        Object[] arguments) throws Throwable {
        Thread currentThread = Thread.currentThread();

        ClassLoader contextClassLoader = currentThread.getContextClassLoader();

        if (contextClassLoader != _classLoader) {
            currentThread.setContextClassLoader(_classLoader);
        }

        try {
            return _clpInvoker.invokeMethod(name, parameterTypes, arguments);
        } finally {
            if (contextClassLoader != _classLoader) {
                currentThread.setContextClassLoader(contextClassLoader);
            }
        }
    }

    protected Class<?> getModelClass() {
        return DataSourceCfg.class;
    }

    protected String getModelClassName() {
        return DataSourceCfg.class.getName();
    }

    /**
     * Performs an SQL query.
     *
     * @param sql the sql query
     */
    protected void runSQL(String sql) throws SystemException {
        try {
            DataSource dataSource = dataSourceCfgPersistence.getDataSource();

            SqlUpdate sqlUpdate = SqlUpdateFactoryUtil.getSqlUpdate(dataSource,
                    sql, new int[0]);

            sqlUpdate.update();
        } catch (Exception e) {
            throw new SystemException(e);
        }
    }
}
